package 笔试记录.M8day7米哈游;

import java.util.ArrayList;
import java.util.Scanner;

public class Main1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int count = sc.nextInt();
        ArrayList<Integer> list = new ArrayList<>();
        //这里是一行输入两个，所以是一次接收两个
        for(int i = 0;list.size() < count * 2;){
            list.add(sc.nextInt());
            list.add(sc.nextInt());
        }
        //变成一整个数组之后，开始遍历整棵树
        //AVL应该是平衡二叉搜索树吧，但是看题目要求，仅仅是平衡有要求
        for (int i = 0;i < list.size();i++){
            if(slove2(i,list)){
                System.out.println(i);
            }
        }
    }

    //这个是用来判断当前节点是否是平衡二叉树
    public static boolean slove2(int index,ArrayList<Integer> list){
        if(index >= list.size()){
            return true;
        }
        int leftLen = solve(index * 2 + 1,list);
        int rightLen = solve(index * 2 + 2,list);
        if(Math.abs(leftLen - rightLen) < 2){
            return slove2(index * 2 + 1,list) && slove2(index * 2 + 2,list);
        }
        return false;
    }

    public static int solve(int index,ArrayList<Integer> list){
        if(index >= list.size()){
            return 0;
        }
        return Math.max(index * 2 +1,index * 2 + 2) +1;//去左右孩子找最大值
    }
}
